package net.ankao.org.easylock.core;

/**
 * <p>
 * EasyLockCallback
 * </p>
 *
 * @author ankao.net
 * @since 2022/3/28
 */
public interface EasyLockCallback<T> {


    /**
     * 调用者必须在此方法中实现需要加分布式锁的业务逻辑
     * @return 执行结果
     * @throws Throwable 异常
     */
    T process() throws Throwable;


    /**
     * 获取分布式锁名称
     * @return 分布式锁名称
     */
    String getLockName();


    /**
     * 获取分布式锁占用时异常描述
     * @return 异常描述
     */
    String getExceptionDesc();
}
